iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

身份驗證Token是一個用於驗證和確保通信安全的數字憑證,常見的有OAuth和JWT,今天來介紹OAuth。
什麼是 OAuth?
OAuth(開放授權,Open Authorization)是一個開放標準,用來讓應用之間安全地交換用戶的授權信息,不需要暴露用戶的帳戶憑證(如密碼)。OAuth使第三方應用能夠在不存儲或管理用戶憑證的情況下,安全地訪問用戶的數據,通常被用於網站或應用程序之間共享數據,比如應用允許你使用Google帳號登錄,獲取你的資料。

OAuth 的核心概念

  • 資源所有者:這是指擁有數據的人或系統,例如某個用戶擁有其社交媒體帳戶中的資料。
  • 客戶端:這是第三方應用,試圖通過OAuth獲取資源所有者的授權,以訪問資源所有者在資源伺服器上的數據。
  • 資源伺服器:儲存資源所有者的數據,例如Google伺服器。
  • 授權伺服器:這個伺服器負責處理授權請求,檢查用戶是否授權客戶端訪問數據,通常資源伺服器和授權伺服器是由同一個提供者運行。

OAuth 的工作流程
OAuth的典型流程如下:

  • 客戶端請求授權:第三方應用(如某個APP)希望訪問用戶的某些資料,會將授權請求發送給資源所有者。
  • 授權授予:資源所有者(用戶)同意授權該應用訪問其數據,並將授權碼(Authorization Code)傳遞給應用。
  • 授權碼交換:客戶端應用將授權碼發送到授權伺服器,並獲取一個訪問Token。
  • 使用訪問Token獲取數據:應用使用這個Token請求資源伺服器,然後資源伺服器驗證Token並返回對應的數據。
  • 過期管理:訪問Token通常有一個有限的有效期,應用可以通過刷新Token獲取新的訪問Token。

OAuth 的授權類型

  • 授權碼模式:這是最常見的授權模式,尤其適合網頁應用。這個模式的安全性較高,可以避免直接暴露用戶的憑證。
  • 隱式模式:這個模式適合單頁應用程序(SPA),安全性較低。
  • 密碼模式:客戶端直接使用用戶的帳號和密碼來獲取訪問Token,這種方式需要高度的信任,否則有安全風險。
  • 客戶端憑證模式:這種模式適用於機器之間的通信,客戶端應用代表自己向授權伺服器請求資源。

OAuth 的 Token 類型

  • 訪問Token(Access Token):授權伺服器發給客戶端的Token,允許客戶端訪問資源伺服器上的數據,這個Token有效期有限,當過期時客戶端需要重新獲取一個新的訪問Token。
  • 刷新Token(Refresh Token):刷新Token是用來獲取新的訪問Token的,當訪問Token過期時,客戶端可以通過刷新Token而無需再次請求用戶授權。

OAuth 的優點

  • 增強安全性:OAuth通過引入授權Token,避免應用直接使用用戶的帳戶密碼,降低了密碼洩露風險。
  • 提升用戶體驗:OAuth允許用戶快速通過已經註冊過的第三方帳戶登錄新應用,而不必重新創建帳號。
  • 簡化應用開發:應用開發者不需要自行管理用戶的身份認證系統,依賴OAuth提供的授權流程即可安全訪問用戶數據。
   [資源所有者 (使用者)] 
             |
             | (1. 授權請求)
             v
   [授權伺服器 (Google)] 
             |
             | (2. 授權碼)
             v
   [客戶端應用 (例如:你的應用)] 
             |
             | (3. Token請求)
             v
   [授權伺服器 (Google)] 
             |
             | (4. 訪問Token)
             v
   [客戶端應用 (例如:你的應用)] 
             |
             | (5. 訪問資源)
             v
   [資源伺服器 (例如:Google API)]

簡單說明:
授權請求:使用者點擊「用Google帳戶登入」,應用向授權伺服器發送授權請求。
授權碼:授權伺服器確認授權後,將授權碼返回給應用。
Token請求:應用使用授權碼向授權伺服器請求訪問Token。
訪問Token:授權伺服器返回訪問Token,應用可以利用它存取資源伺服器上的數據。
訪問資源:應用使用Token向資源伺服器請求數據,如Google API提供的使用者資料。


上一篇
Day11 Token 經濟學
下一篇
Day13 認識 JSON Web Token 認證機制
系列文
Token相關的應用場景和技術領域30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言